﻿using Business.Base;
using Business.Base.Model;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Business.CentrifugalPump.Perf
{
    public class CentrifugalPumpPerfChartData:BaseChartData
    {
        #region 私有变量
        double maxXQAxis;
        double minXQAxis;
        double minYHAxis;
        double maxYHAxis;
        double minYPAxis;
        double maxYPAxis;
        int xUnitCount;
        int yUnitCount;
        double xRatedQ;
        double yRatedHead;
        double yRatedPower;
        double yRatedEff;
        double yMaxHeadinRateHeadQLine;
        double xMaxHeadinRateHeadQLine;
        double measureHead = Double.NaN ;
        double measureFlow = Double.NaN;
        double measureEff = Double.NaN;
        double measurePower = Double.NaN;

        double axisXQInterval;
        double axisYHInterval;
        double axisYPInterval;
        double axisYEInterval;

        ArrayList drawXQList;
        ArrayList drawYHList;
        ArrayList drawYPList;
        ArrayList drawYEList;


        double[] axisInterval = new double[4];


        List<double[]> drawList =new List<double[]>();
        List<Double[]> inputPoints = new List<Double[]>();


        Double peRate;

        Boolean showHeadRange;
        Boolean showPowerRange;
        Boolean showEffRange;
        Boolean showRatedLine;


        double[,] flowHeadRange;
        double[,] flowPowerRange;
        double[,] flowEffRange;
        #endregion

        /// <summary>
        /// 流量作为X轴的最大值
        /// </summary>
        public double MaxXQAxis { get => maxXQAxis; set => maxXQAxis = value; }

        /// <summary>
        /// 流量最为Y轴的最小值
        /// </summary>
        public double MinXQAxis { get => minXQAxis; set => minXQAxis = value; }

        
        public double MinYHAxis { get => minYHAxis; set => minYHAxis = value; }
        public double MaxYHAxis { get => maxYHAxis; set => maxYHAxis = value; }
        public double MinYPAxis { get => minYPAxis; set => minYPAxis = value; }
        public double MaxYPAxis { get => maxYPAxis; set => maxYPAxis = value; }
        public int XUnitCount { get => xUnitCount; set => xUnitCount = value; }
        public int YUnitCount { get => yUnitCount; set => yUnitCount = value; }
        public double[] AxisInterval { get => axisInterval; set => axisInterval = value; }


        public List<double[]> DrawList { get => drawList; set => drawList = value; }

        public List<double[]> InputPoints { get => inputPoints; set => inputPoints = value; }

        public double PeRate { get => peRate; set => peRate = value; }
        public double XRatedQ { get => xRatedQ; set => xRatedQ = value; }
        public double YRatedHead { get => yRatedHead; set => yRatedHead = value; }
        public double YRatedPower { get => yRatedPower; set => yRatedPower = value; }
        public double YRatedEff { get => yRatedEff; set => yRatedEff = value; }
        public double MinYEAxis { get => 0.0f; }
        public double MaxYEAxis { get => 100.0f; }
       

        public double[,] FlowHeadRange { get => flowHeadRange; set => flowHeadRange = value; }
        public double[,] FlowPowerRange { get => flowPowerRange; set => flowPowerRange = value; }
        public double[,] FlowEffRange { get => flowEffRange; set => flowEffRange = value; }
        public bool ShowHeadRange { get => showHeadRange; set => showHeadRange = value; }
        public bool ShowPowerRange { get => showPowerRange; set => showPowerRange = value; }
        public bool ShowEffRange { get => showEffRange; set => showEffRange = value; }
        public bool ShowRatedLine { get => showRatedLine; set => showRatedLine = value; }
        public double YMaxHeadinRateHeadQLine { get => yMaxHeadinRateHeadQLine; set => yMaxHeadinRateHeadQLine = value; }
        public double MeasureHead { get => measureHead; set => measureHead = value; }
        public double MeasureFlow { get => measureFlow; set => measureFlow = value; }
        public double MeasureEff { get => measureEff; set => measureEff = value; }
        public double MeasurePower { get => measurePower; set => measurePower = value; }
        public double XMaxHeadinRateHeadQLine { get => xMaxHeadinRateHeadQLine; set => xMaxHeadinRateHeadQLine = value; }
    }
}
